<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>{insert}</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Smarty マニュアル">
<link rel="up" href="language.builtin.functions.html" title="Chapter 7. 組み込み関数">
<link rel="prev" href="language.function.include.php.html" title="{include_php}">
<link rel="next" href="language.function.ldelim.html" title="{ldelim},{rdelim}">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">{insert}</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="language.function.include.php.html">Prev</a> </td>
<th width="60%" align="center">Chapter 7. 組み込み関数</th>
<td width="20%" align="right"> <a accesskey="n" href="language.function.ldelim.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" title="{insert}">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="language.function.insert"></a>{insert}</h2></div></div></div>
<p>
   <code class="varname">{insert}</code> タグは <a class="link" href="language.function.include.html" title="{include}"><code class="varname">{include}</code></a>
   タグと似た動作をします。ただ <code class="varname">{insert}</code>
   タグは、テンプレートの <a class="link" href="caching.html" title="Chapter 14. キャッシュ">キャッシュ</a>
   が有効であってもキャッシュされません。
   テンプレートが呼び出されるたびに実行されます。
 </p>
<div class="informaltable"><table border="1">
<colgroup>
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col>
</colgroup>
<thead><tr>
<th align="center">属性名</th>
<th align="center">型</th>
<th align="center">必須</th>
<th align="center">デフォルト</th>
<th>概要</th>
</tr></thead>
<tbody>
<tr>
<td align="center">name</td>
<td align="center">string</td>
<td align="center">Yes</td>
<td align="center"><span class="emphasis"><em>n/a</em></span></td>
<td>呼び出すinsert関数の名前(insert_name)</td>
</tr>
<tr>
<td align="center">assign</td>
<td align="center">string</td>
<td align="center">No</td>
<td align="center"><span class="emphasis"><em>n/a</em></span></td>
<td>出力を格納するテンプレート変数名</td>
</tr>
<tr>
<td align="center">script</td>
<td align="center">string</td>
<td align="center">No</td>
<td align="center"><span class="emphasis"><em>n/a</em></span></td>
<td>insert関数を呼び出す前にインクルードされるPHPスクリプト名</td>
</tr>
<tr>
<td align="center">[var ...]</td>
<td align="center">[var type]</td>
<td align="center">No</td>
<td align="center"><span class="emphasis"><em>n/a</em></span></td>
<td>insert関数に渡す変数</td>
</tr>
</tbody>
</table></div>
<p>
  例えば、ページの上部にバナーを表示するテンプレートを持っているとします。
  バナーにはHTML, images, flash等が混合して含まれます。
  したがってここに静的リンクを用いる事はできないので、
  バナーコンテンツをキャッシュの対象にしたくありません。
  そのためには、あらかじめ設定ファイルから取得した #banner_location_id#
  と #site_id# の値を渡し、バナーコンテンツを表示するために
  {insert} タグを呼び出す必要があります。
 </p>
<div class="example">
<a name="id2778177"></a><p class="title"><b>Example 7.22. {insert} 関数</b></p>
<div class="example-contents"><pre class="programlisting">
{* バナーを取得する例 *}
{insert name="getBanner" lid=#banner_location_id# sid=#site_id#}
</pre></div>
</div>
<br class="example-break"><p>
  この例では、name 属性に <span class="quote">“<span class="quote">getBanner</span>”</span> を指定し、
  パラメータに #banner_location_id# と #site_id# を渡しています。Smarty は
  PHP アプリケーション内の insert_getBanner() 関数を探し、第１パラメータとして
  #banner_location_id# と #site_id# の値を格納した連想配列を渡します。
  アプリケーションにおける全ての {insert} 関数の名前は、
  ネームスペースの衝突を避けるために "insert_" によって始まる必要があります。
  insert_getBanner() 関数は、渡された値によって何らかの処理を行い、結果を返すべきです。
  この結果はテンプレートの {insert} タグに置換されて表示されます。
  この例では、Smarty は insert_getBanner(array("lid" =&gt; "12345","sid" =&gt; "67890"));
  という関数を呼び出し、返された結果が {insert} タグの位置に表示されます。
  </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>
   <em class="parameter"><code>assign</code></em> 属性を指定すると、
   <code class="varname">{insert}</code> タグの出力は
   ブラウザに表示される代わりにテンプレート変数に格納されます。
   </p>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Note</h3>
<p>
    出力をテンプレート変数に格納するのは、
    <a class="link" href="variable.caching.html" title="$caching">キャッシュ</a>
    が有効な状態ではあまり有益ではありません。
   </p>
</div>
<p>
  </p>
</li>
<li class="listitem">
<p>
   <em class="parameter"><code>script</code></em> 属性を与えると、この PHP スクリプトは
   <code class="varname">{insert}</code> 関数が実行される前に
   (一度だけ) インクルードされます。
   これは、insert 関数がまだ存在しないかもしれない場合や、insert
   関数の動作のために PHP スクリプトを最初にインクルードする必要がある場合に指定します。
   </p>
<p>
   パスには、絶対パスかあるいは
   <a class="link" href="variable.trusted.dir.html" title="$trusted_dir"><em class="parameter"><code>$trusted_dir</code></em></a>
   からの相対パスを指定します。<a class="link" href="variable.security.html" title="$security"><em class="parameter"><code>$security</code></em></a>
   が有効な場合は、スクリプトは
   <a class="link" href="variable.trusted.dir.html" title="$trusted_dir"><em class="parameter"><code>$trusted_dir</code></em></a>
   内にある必要があります。
  </p>
</li>
</ul></div>
<p>
   Smarty オブジェクトは第２パラメータとして渡されます。
   これにより、<code class="varname">{insert}</code>
   関数から Smarty オブジェクトの情報の参照や修正が可能です。
  </p>
<div class="note" title="テクニカルノート" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">テクニカルノート</h3>
<p>
    テンプレートには、キャッシュの対象外となる部分を持たせる事が可能です。
    <a class="link" href="caching.html" title="Chapter 14. キャッシュ">キャッシュ</a> が有効の場合でも、
    <code class="varname">{insert}</code> タグによる出力はキャッシュされません。
    そのページが呼び出される度に動的に実行されます。
    この動作は、バナー・投票・天気予報・検索結果・ユーザーフィードバックエリア等に向いています。
   </p>
</div>
<p>
  <a class="link" href="language.function.include.html" title="{include}"><code class="varname">{include}</code></a> 
   も参照してください。
  </p>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="language.function.include.php.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="language.builtin.functions.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="language.function.ldelim.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">{include_php} </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> {ldelim},{rdelim}</td>
</tr>
</table>
</div>
</body>
</html>
